package reflect;


import java.lang.reflect.Method;
import java.util.Scanner;

public class ReflectDemo4 {
    public static void main(String[] args) throws Exception{
        Person p = new Person();
        p.sayHello();


/*
        Class cls  = Class.forName("reflect.Person");
        Object obj = cls.newInstance();



        Method method = cls.getMethod("sayHello");
        //object父类 无法调用子类特有的方法
        // invoke方法底层会强转为调用getMethod方法的这个类
        method.invoke(obj);*/

        //动态调取类 和方法
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入类名");
        String s = sc.nextLine();

        Class<?> cls = Class.forName(s);
        Object o = cls.newInstance();


        System.out.println("请输入方法名");
        String line = sc.nextLine();
        Method method = cls.getMethod(line);
        method.invoke(o);


    }
}
